`
https://leetcode.cn/problems/kth-smallest-number-in-multiplication-table/
`

/**
 * @param {number} m
 * @param {number} n
 * @param {number} k
 * @return {number}
 */
var findKthNumber = function (m, n, k) {
  // 第 k 小可以转换为 求最小的 x，满足 <= x 的数至少有 k 个
  // 给定 x，统计乘法表中 <= x 的个数 cnt，判断是否满足 cnt >= k
  const check = (x) => {
    let cnt = 0
    for (let i = 1; i <= m; i++) {
      // 在 [1, x] 中，有 Math.floor(x / i) 个 i 的倍数，但不能超过 n
      cnt += Math.min(Math.floor(x / i), n)
      if (cnt >= k) return true
    }
    return false
  }

  let left = 0, right = m * n
  while (left + 1 < right) {
    const mid = left + Math.floor((right - left) / 2)
    if (check(mid)) {
      right = mid
    } else {
      left = mid
    }
  }
  return right
};